package _剑指offer._设计模式;


/**
 * 简单工厂模式，又称为静态工厂方法类
 * 专门定义一个工厂类，用来根据传入的条件判断，返回指定类的实例
 * 被创建的类通常拥有共同的父类
 * 
 * 优点：实现对象的创建和使用分离，创建由工厂类完成，客户只需要使用
 * 缺点：每次创建对象都需要修改 工厂类，如果子类很多则很不方便
 *
 * @author Liu Huan
 */
class User {
	public static void main(String[] args) {
		Product product = SimpleFactory.createProduct("A");
		product.print();
		Product product1 = SimpleFactory.createProduct("B");
		product1.print();
	}
}

public class SimpleFactory {
	public static Product createProduct(String type) {
		if (type.equals("A")) {
			return new ProA();
		} else {
			return new ProB();
		}
	}
}


abstract class Product {
	public abstract void print();
}

class ProA extends Product {
	@Override
	public void print() {
		System.out.println("我是 ProA ");
	}
}

class ProB extends Product {
	@Override
	public void print() {
		System.out.println("我是 ProB ");
	}
}